package Logica.Gestores;

import java.util.ArrayList;
import java.util.List;

import AccesoADatos.EquipoFantasiaDAO;
import AccesoADatos.JugadorDAO;
import Logica.Entidades.Formacion;
import Logica.Entidades.Jugador;
import Logica.Entidades.Puntaje;
import Presentacion.Interfaz;

public class GestorJugador {

	private JugadorDAO jugadorDAO;
	private Interfaz padre;

	public GestorJugador(Interfaz i){
		super();
		padre = i;
		jugadorDAO = new JugadorDAO();
	}
	
	public List<Jugador> getJugadores(int id){
		List<List<String>> jugadoresDto = jugadorDAO.getJugadores(id);
		List<Jugador> jugadores = new ArrayList<Jugador>();
		for(int i = 0; i < jugadoresDto.size() ; i++){
			Integer idj = new Integer(jugadoresDto.get(i).get(0));
			Integer dorsal = new Integer(jugadoresDto.get(i).get(3));
			Integer cotizacion = new Integer(jugadoresDto.get(i).get(5));
			Jugador j = new Jugador(idj.intValue(),jugadoresDto.get(i).get(2),jugadoresDto.get(i).get(1),jugadoresDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
			jugadores.add(j);
		}
		return jugadores;
	}
	
	public List<Jugador> buscarJugadores(String equipo, String posicion, String rango){
		List<Jugador> jugadores = new ArrayList<Jugador>();
		int rangoInferior = -1;
		int rangoSuperior = -1;
		if(!rango.equals("Todos")){
			String [] rangos = rango.split("-");
			rangoInferior = new Integer(rangos[0]).intValue();
			rangoSuperior = new Integer(rangos[1]).intValue();
		}
		List<List<String>> jugadoresDto = jugadorDAO.buscarDtoJugadores(equipo, posicion, rangoInferior, rangoSuperior);
		
		for(int i = 0; i < jugadoresDto.size() ; i++){
			Integer idj = new Integer(jugadoresDto.get(i).get(0));
			Integer dorsal = new Integer(jugadoresDto.get(i).get(3));
			Integer cotizacion = new Integer(jugadoresDto.get(i).get(5));
			Jugador j = new Jugador(idj.intValue(),jugadoresDto.get(i).get(2),jugadoresDto.get(i).get(1),jugadoresDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
			jugadores.add(j);
		}
		return jugadores;
	}
	
	public List<Jugador> buscarTitulares(Formacion f){
		List<List<String>> titularesDto = new ArrayList<List<String>>();
		titularesDto = jugadorDAO.buscarDtoTitulares(f);
		List<Jugador> jugadoresTitulares = new ArrayList<Jugador>();
		for(int i = 0 ; i < titularesDto.size() ; i++){
			Integer idj = new Integer(titularesDto.get(i).get(0));
			Integer dorsal = new Integer(titularesDto.get(i).get(3));
			Integer cotizacion = new Integer(titularesDto.get(i).get(5));
			Jugador j = new Jugador(idj.intValue(),titularesDto.get(i).get(2),titularesDto.get(i).get(1),titularesDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
			jugadoresTitulares.add(j);
		}
		return jugadoresTitulares;
	}
	
	public List<Jugador> buscarSuplentes(Formacion f){
		List<List<String>> suplentesDto = new ArrayList<List<String>>();
		suplentesDto = jugadorDAO.buscarDtoSuplentes(f);
		List<Jugador> jugadoresSuplentes = new ArrayList<Jugador>();
		for(int i = 0 ; i < suplentesDto.size() ; i++){
			Integer idj = new Integer(suplentesDto.get(i).get(0));
			Integer dorsal = new Integer(suplentesDto.get(i).get(3));
			Integer cotizacion = new Integer(suplentesDto.get(i).get(5));
			Jugador j = new Jugador(idj.intValue(),suplentesDto.get(i).get(2),suplentesDto.get(i).get(1),suplentesDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
			jugadoresSuplentes.add(j);
		}
		return jugadoresSuplentes;
	}
	
		public List<Jugador> obtenerJugadoresTitulares(int idFormacionActual, int nroFecha) {
			List<List<String>> jugadoresDto = jugadorDAO.obtenerJugadoresTitulares(idFormacionActual);
			List<Jugador> jugadores = new ArrayList<Jugador>();
			GestorPuntaje gp = padre.getGestorPuntaje();
			for(int i = 0; i < jugadoresDto.size() ; i++){
				Integer idj = new Integer(jugadoresDto.get(i).get(0));
				Integer dorsal = new Integer(jugadoresDto.get(i).get(3));
				Integer cotizacion = new Integer(jugadoresDto.get(i).get(5));
				Jugador j = new Jugador(idj.intValue(),jugadoresDto.get(i).get(2),jugadoresDto.get(i).get(1),jugadoresDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
				jugadores.add(j);
				Puntaje p = gp.obtenerPuntaje(nroFecha, j);
				j.addPuntaje(nroFecha, p);
			}
			return jugadores;
		}
		
		
		public List<Jugador> obtenerJugadoresSuplentes(int idFormacionActual, int nroFecha) {
			List<List<String>> jugadoresDto = jugadorDAO.obtenerJugadoresSuplentes(idFormacionActual);
			List<Jugador> jugadores = new ArrayList<Jugador>();
			GestorPuntaje gp = padre.getGestorPuntaje();
			for(int i = 0; i < jugadoresDto.size() ; i++){
				Integer idj = new Integer(jugadoresDto.get(i).get(0));
				Integer dorsal = new Integer(jugadoresDto.get(i).get(3));
				Integer cotizacion = new Integer(jugadoresDto.get(i).get(5));
				Jugador j = new Jugador(idj.intValue(),jugadoresDto.get(i).get(2),jugadoresDto.get(i).get(1),jugadoresDto.get(i).get(4),cotizacion.intValue(),dorsal.intValue());
				jugadores.add(j);
				Puntaje p = gp.obtenerPuntaje(nroFecha, j);
				j.addPuntaje(nroFecha, p);
			}
			return jugadores;
		}
}
